/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.conasinf.sofia.controller;

import com.conasinf.sofia.model.dao.Impl.TercerosDAOImpl;
import com.conasinf.sofia.model.dao.TercerosDAO;
import java.io.Serializable;
import static java.lang.Boolean.FALSE;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import com.conasinf.sofia.model.TTerceros;
import com.conasinf.sofia.model.TTiposDocumento;

/**
 *
 * @author jfgomez
 */
@ManagedBean
@SessionScoped
public class TercerosBean implements Serializable {

    //Variable lista que es una lista de tipo TTerceros segun el modelo
    //Variable objSelect que es un objeto del tipo TTerceros que recibira el objeto seleccionado en la vista
    private List<TTerceros> lista;
    private TTerceros objSeleccionado = new TTerceros();
    private String apellidoNombre = "";

    //Inicializa la lista al instanciar la clase    
    public TercerosBean() {
        this.lista = new ArrayList<TTerceros>();
        this.objSeleccionado = new TTerceros();

        if (this.objSeleccionado.getTTiposDocumento() == null) {
            this.objSeleccionado.setTTiposDocumento(new TTiposDocumento());
        }
        this.apellidoNombre = "";
    }
    
    public void inicializarConsulta(){
        this.apellidoNombre = "";
        this.objSeleccionado.getTEstatusLaboral().setId(0);
    }

    /**
     * insert() * inserta un nuevo registro en la base de datos crea un nuevo
     * objeto de tipo DAOImpl asigna id en cero para no enviar nulos a la base
     * de datos asigna el usuario que esta trabajando en sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void insert(ActionEvent actionEvent) {
        TercerosDAO consulta = new TercerosDAOImpl();
        this.objSeleccionado.setId(0);
        this.objSeleccionado.setUsuario("jfgomez");
        consulta.save(this.objSeleccionado);
    }

    /**
     * update() * actualiza el registtro seleccionado en la base de datos crea
     * un nuevo objeto de tipo DAOImpl asigna el usuario que esta trabajando en
     * sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void update(ActionEvent actionEvent) {
        TercerosDAO consulta = new TercerosDAOImpl();
        this.objSeleccionado.setUsuario("jfgomez");
        consulta.update(this.objSeleccionado);
    }

    /**
     * getLista() * entrega una lista de objetos segun la consulta enviada Crea
     * un nuevo objeto de tipo DAOImpl
     *
     * @author jfgomez
     * @return
     */
    public List<TTerceros> getLista() {
        TercerosDAO consulta = new TercerosDAOImpl();
        String sql;
        sql = "from TTerceros as t where "
                + "(t.primerApellido || ' ' || t.segundoApellido || ' ' || "
                + "t.primerNombre || ' ' || t.segundoNombre "
                + "like '%"+this.apellidoNombre+"%') "
                + "order by t.primerApellido, t.segundoApellido, t.primerNombre, t.segundoNombre, documento";
        return consulta.findAll(sql);
    }

    public void setLista(List<TTerceros> lista) {
        this.lista = lista;
    }

    public TTerceros getObjSeleccionado() {
        return objSeleccionado;
    }

    public void setObjSeleccionado(TTerceros objSeleccionado) {
        this.objSeleccionado = objSeleccionado;
    }

    public String getApellidoNombre() {
        return apellidoNombre;
    }

    public void setApellidoNombre(String apellidoNombre) {
        this.apellidoNombre = apellidoNombre.toUpperCase();
    }

}
